<?php
/**
 * Nweb Editor
 *
 * This script is protected by copyright. Its use, copying, modification
 * and distribution without written consent of the author is prohibited.
 *
 * @category    source
 * @package     pl.nweb.editor.locale
 * @author      Krzysztof Kardasz <krzysztof.kardasz@gmail.com>
 * @copyright   Copyright (c) 2012 Krzysztof Kardasz
 * @license     http://www.gnu.org/licenses/lgpl-3.0.txt  GNU Lesser General Public
 * @version     1.0 $Id$
 * @link        https://nweb-editor.googlecode.com
 * @link        http://editor.nweb.pl
 */

namespace pl\nweb\editor\media;

/**
 * Menadżer lokalizacji
 *
 * @category    source
 * @package     pl.nweb.editor.locale
 * @author      Krzysztof Kardasz <krzysztof.kardasz@gmail.com>
 * @copyright   Copyright (c) 2012 Krzysztof Kardasz
 * @version     1.0 $Id$
 */
class Path
{
    /**
     * Media base dir
     *
     * @var string
     */
    private static $_mediaDir = null;

    /**
     * Sól
     */
    const SALT = 'naes7phaeGaej9eemo3M!';

    /**
     * Zwraca ścieżkę do katalogu mediów użytkownika
     *
     * @param integer $userId identyfikator użytkownika
     * @return string
     */
    public static function getMediaPath($mediumId)
    {
        return 'media/user/' .ceil($mediumId/1000) . '/' . md5($mediumId . self::SALT);
    }

    /**
     * Zwraca ścieżkę do katalogu mediów użytkownika
     *
     * @param integer $userId identyfikator użytkownika
     * @return string
     * @throws Exception
     */
    public static function getMediumRealPath($mediumId)
    {
        $path = self::getMediaBaseDir() . '/' . self::getMediaPath($mediumId);
        if(!is_dir($path)) {
            mkdir($path, 0775, true);
        }
        return $path;
    }

    /**
     * Zwraca ścieżkę bazową do katalogu w którym znajduje się folder media
     *
     * @return string
     * @throws Exception
     */
    public static function getMediaBaseDir()
    {
        if(null === self::$_mediaDir) {
            if ($dir = realpath(APPLICATION_PATH . '/../public')) {
                self::$_mediaDir = $dir;
            } else {
                throw new \Exception ('Media base dir not exists');
            }
        }
        return self::$_mediaDir;
    }
}